package acs.offer.util;

import java.util.List;

import acs.offer.pojo.Header;
import acs.offer.pojo.Message;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import io.netty.util.CharsetUtil;

public class OfferDecoder extends ByteToMessageDecoder {
    @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {

        // 获取协议的版本
        int version = in.readInt();
        // 获取消息长度
        int contentLength = in.readInt();
        // 获取SessionId
        byte[] sessionByte = new byte[36];
        in.readBytes(sessionByte);
        String sessionId = new String(sessionByte);

        // 组装协议头
        Header header = new Header(version, contentLength, sessionId);

        // 读取消息内容
        ByteBuf byteBuf = in.readBytes(in.readableBytes());
        String content = byteBuf.toString(CharsetUtil.UTF_8);

        Message message = new Message(header, content);

        out.add(message);
    }
}
